package com.torrenttunes.server.db; import static com.torrenttunes.server.db.Tables.*; import java.util.List; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.node.ArrayNode; import org.codehaus.jackson.node.ObjectNode; import org.javalite.activejdbc.Model; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.torrenttunes.server.db.Tables.Artist; import com.torrenttunes.server.db.Tables.ArtistTagView; import com.torrenttunes.server.tools.Tools; public class Transformations { static final Logger log = LoggerFactory.getLogger(Transformations.class); public static ObjectNode artistViewJson(String artistMbid) { Artist artist = ARTIST.findFirst("mbid = ?", artistMbid); List<ArtistTagView> tags = ARTIST_TAG_VIEW.find("mbid = ?", artistMbid); List<Model> relatedArtists = RELATED_ARTIST_VIEW.findBySQL(RELATED_ARTIST_VIEW_SQL, artistMbid, artistMbid); // RELATED_ARTIST_VIEW.find // log.info(RELATED_ARTIST_VIEW.find( // "mbid like ? and `mbid:1` not like ?", // artistMbid,artistMbid).toSql()); ObjectNode a = Tools.MAPPER.createObjectNode(); JsonNode c = Tools.jsonToNode(artist.toJson(false)); ObjectNode on = Tools.MAPPER.valueToTree(c); a.putAll(on); ArrayNode an = a.putArray("related_artists"); for (Model relatedArtist : relatedArtists) { an.add(Tools.jsonToNode(relatedArtist.toJson(false))); } ArrayNode ab = a.putArray("tags"); for (ArtistTagView tag : tags) { ab.add(Tools.jsonToNode(tag.toJson(false))); } return a; } }